package com.easysoft.framework.menu.mapper;

import com.easysoft.framework.beans.Page;
import com.easysoft.framework.menu.model.SysMenuQuery;
import com.easysoft.framework.menu.model.SysMenuView;
import com.easysoft.framework.stereotype.MyBatisRepository;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@MyBatisRepository("mapper.SysMenuMapperExtd")
public interface SysMenuMapperExtd extends SysMenuMapper{
    /**
     * 分页查询所有菜单信息
     *
     * @param page
     *            分页条件
     * @return 符合条件的菜单列表
     */
    public List<SysMenuView> selectSysMenuByPage(@Param("page") Page page, @Param("query") SysMenuQuery query);

    /**
     * 查询所有菜单数量
     *
     * @return 行数
     */
    public int selectCountAllSysMenu(@Param("query") SysMenuQuery query);

    /**
     * 根据层级查询菜单
     *
     * @param menuLevel
     *            层级
     * @return 结果集
     */
    public List<SysMenuView> selectSysMenuByLevel(int menuLevel);

    /**
     * 查询角色所拥有的菜单权限
     *
     * @param userId
     *            用户主键
     * @return
     */
    public List<SysMenuView> selectEnableSysMenuByUserId(String userId);

    /**
     * 查询菜单链接标识是否存在
     *
     * @param mid
     *            菜单链接标识
     * @return
     */
    public List<SysMenuView> checkMid(int mid);

    /**
     * 查询启用/禁用的菜单
     *
     * @param disable
     *            是否启用
     * @return 符合条件的菜单列表
     */
    List<SysMenuView> selectAllSysMenuByIsEnable(int disable);

    /**
     * 查询子节点数量
     *
     * @param parentId
     * @return 条数
     */
    public int selectCountByParentId(String parentId);


}
